home *** CD-ROM | disk | FTP | other *** search
/ .net 2002 March / DotNetMagazine-Issue107-Coverdisc-NET107-02-03-PCMac.bin / pc / PC Software / free_browsing / DavesQckSearchDbar3-14 / dqsd.exe / searches / reget.xml < prev    next >
Text File  |  2002-08-30  |  6KB  |  170 lines

  1. <search function="reget">
  2.   <name>ReGet</name>
  3.   <description>
  4.     ReGet will auto-reload a URL at a given frequency. The first argument is an integer representing the number of page reloads, The second is an integer representing the reload frequency in seconds. Settings the number of iterations to 0 will cause the cycle to continue indefinately.<br/>
  5.     <div class="helpboxDescLabels">Usage:</div>
  6.       <table class="helpboxDescTable">
  7.           <tr><td>Set</td><td> - </td><td>reget <<i>iterations</i>> <<i>interval</i>> <<i>url</i>> [/noforce]</td></tr>
  8.       <tr><td>Cancel</td><td> - </td><td>reget cancel</td></tr>
  9.       </table>
  10.     <div class="helpboxDescLabels">Switches:</div>
  11.       <table class="helpboxDescTable">
  12.           <tr><td>/noforce</td><td> - </td><td>Forces ReGet to use the cached copy of the web page when reloading.</td></tr>
  13.       </table>
  14.     <div class="helpboxDescLabels">Example:</div>
  15.     <table class="helpboxDescTable">
  16.           <tr><td>reget 10 20 http://www.gymamerica.com</td></tr>
  17.       <tr><td>reget 0 20 http://www.whitehouse.gov /noforce</td></tr>
  18.       </table>
  19.   </description>
  20.   <category>Functions</category>
  21.   <contributor>Neel Doshi</contributor>
  22.   
  23.   <script><![CDATA[
  24.     // Array used to keep track of reget commands that are pending completion
  25.     regetTracker = new Array();
  26.  
  27.     function regetURLLoad(freq, num, name, reget_code, force_reload, strURL)
  28.     {
  29.       if (force_reload == 1)
  30.       {
  31.         // Append something unique to each request to guarantee a true
  32.         // releod from the server instead of the browser cache.
  33.         var strURL1;
  34.         var str_concat_char;
  35.         if ( strURL.match(/[?]+/) )
  36.           str_concat_char = "®et_foo=";
  37.         else
  38.           str_concat_char = "?";
  39.  
  40.         strURL1 = strURL + str_concat_char + (new Date()).getTime();
  41.       }
  42.       else
  43.         strURL1 = strURL;
  44.  
  45.       // Open the URL in the same browser window.
  46.       // Note:  I am using window.open because I do not know of another
  47.       // way to ensure opening the page in the same window everytime.
  48.       window.open(strURL1, name);
  49.  
  50.       // See if the function should be called again.
  51.       if (--num == 0)
  52.       {
  53.           if (typeof regetTimeOut != 'undefined')
  54.           {
  55.           clearInterval(regetTimeOut);
  56.           delete regetTracker[reget_code];
  57.         }
  58.         return false;
  59.       }
  60.       else
  61.       {
  62.           // We need to iterate again.
  63.           var strTimeout = "regetURLLoad('" + freq + "', '" + num + "', '" + name + "', '" + reget_code + "', '" + force_reload + "', '" + strURL + "');";
  64.           regetTimeOut = setTimeout(strTimeout, freq * 1000);
  65.           regetTracker[reget_code] = regetTimeOut;
  66.       }
  67.       return true;
  68.     }
  69.  
  70.  
  71.       function reget(q, switches)
  72.       {
  73.         if (nullArgs("reget", q))
  74.           return false;
  75.   
  76.         // First parse the arguments
  77.         var args_array = q.split(' ');
  78.         var args_num = args_array.shift();
  79.         var args_freq = args_array.shift();
  80.         var args_rest = args_array.join(' ');
  81.         var reget_base = 1;
  82.   
  83.         // Does the member want to cancel a previous reget
  84.         if (args_num == 'cancel')
  85.         {
  86.           // The member wants to cancel a particular reget session
  87.           var reget_code;
  88.           if (typeof args_freq == 'undefined')
  89.           {
  90.             args_freq = reget_base;
  91.             reget_code = "";
  92.           }
  93.           else
  94.             reget_code = args_freq + " ";
  95.   
  96.           if (typeof regetTracker[args_freq] != 'undefined')
  97.           {
  98.             clearInterval(regetTracker[args_freq]);
  99.             delete regetTracker[args_freq];
  100.             document.deff.q.value = "ReGet " + reget_code + "canceled!";
  101.             setTimeout("document.deff.q.value='';",1000);
  102.             return true;
  103.           }
  104.           else
  105.           {
  106.             alert("ReGet not found!");
  107.             return false;
  108.             }
  109.         }
  110.   
  111.         // Next determine if the first argument is an integer or not.
  112.         if ( !(args_num.match(/^(\d)+$/)) )
  113.         {
  114.           alert("The first argument must be an integer representing the number of page reloads");
  115.           return false;
  116.         }
  117.   
  118.         // Next determine if the next argument is a valid integer
  119.         if (typeof args_freq == 'undefined' || args_freq.match(/^(\d)+$/) == null || args_freq == 0)
  120.         {
  121.           alert("The second argument must be an integer representing the reload frequency in seconds");
  122.           return false;
  123.         }
  124.   
  125.         // Next determine if the next argument has something to open in a browser:
  126.         var strURL = isURL(args_rest);
  127.         if (typeof args_rest == 'undefined' || strURL == false)
  128.         {
  129.           alert("The third argument must be a valid URL");
  130.           return false;
  131.         }
  132.   
  133.         // Determine if the reload forcing string should be used or not.
  134.         var bforce_reload = 1;
  135.         if (switches == "noforce")
  136.           bforce_reload = 0
  137.   
  138.         // Generate a reget code and target name
  139.         // The purpose of the reget code is to allow the user to cancel a
  140.         // reget once it has begun.  The regetTracker array will keep track of
  141.         // all of the active regets and associate a reget code to a setTimeout handle
  142.         // so the user doesn't have to keep track of the changing setTimeout handles.
  143.         // The array serves the dual purpose of also allowing reget to create a unique
  144.         // name for target window so that each reget shows up in a different browser.
  145.       for (var reget_code = reget_base; typeof regetTracker[reget_code] != 'undefined'; ++reget_code)
  146.  
  147.       var reget_target = "target_" + reget_code;
  148.  
  149.       // Start getting the URL
  150.       regetURLLoad(args_freq, args_num, reget_target, reget_code, bforce_reload, strURL);
  151.  
  152.       // Display the cancel code.
  153.       if (reget_code == reget_base)
  154.         reget_code = "";
  155.       else
  156.           reget_code = " " + reget_code;
  157.       document.deff.q.value = "To cancel: 'reget cancel" + reget_code + "'";
  158.       setTimeout("document.deff.q.value='';",2000);
  159.  
  160.       return true;
  161.     }
  162.   ]]></script>
  163.  
  164.   <copyright>
  165.     Copyright (c) 2002 David Bau
  166.     Distributed under the terms of the
  167.     GNU Public License, Version 2 (http://www.gnu.org/copyleft/gpl.txt)
  168.   </copyright>
  169. </search>
  170.